import { IPSAppModule } from '../ipsapp-module';
import { IPSApplication } from '../ipsapplication';
import { IPSAppCounterRef } from '../control/ipsapp-counter-ref';
import { IPSAppDataEntity } from '../dataentity/ipsapp-data-entity';
import { IPSAppView } from './ipsapp-view';
import { IPSAppViewEngine } from './ipsapp-view-engine';
import { IPSAppViewLogic } from './ipsapp-view-logic';
import { IPSAppViewMsgGroup } from './ipsapp-view-msg-group';
import { IPSAppViewNavContext } from './ipsapp-view-nav-context';
import { IPSAppViewNavParam } from './ipsapp-view-nav-param';
import { IPSAppViewParam } from './ipsapp-view-param';
import { IPSAppViewRef } from './ipsapp-view-ref';
import { IPSAppViewUIAction } from './ipsapp-view-uiaction';
import { IPSControl } from '../../control/ipscontrol';
import { IPSViewLayoutPanel } from '../../control/panel/ipsview-layout-panel';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysCss } from '../../res/ipssys-css';
import { IPSSysImage } from '../../res/ipssys-image';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';
import { PSModelObjectImpl } from '../../psmodel-object-impl';

export class PSAppViewImpl extends PSModelObjectImpl implements IPSAppView {
  get accUserMode(): 0 | 2 | 3 | 4 {
    return this.M.accUserMode;
  }

  get accessKey(): string {
    return this.M.accessKey;
  }

  protected cappslanguageres: IPSLanguageRes | null = null;

  getCapPSLanguageRes(): IPSLanguageRes | null {
    if (this.cappslanguageres != null) return this.cappslanguageres;
    const value = this.M.getCapPSLanguageRes;
    if (value == null) {
      return null;
    }
    this.cappslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getCapPSLanguageRes') as IPSLanguageRes;
    return this.cappslanguageres;
  }

  get capPSLanguageRes(): IPSLanguageRes | null {
    return this.getCapPSLanguageRes();
  }

  getCapPSLanguageResMust(): IPSLanguageRes {
    const value = this.getCapPSLanguageRes();
    if (value == null) {
      throw new Error('未指定标题语言资源');
    }
    return value;
  }

  get caption(): string {
    return this.M.caption;
  }

  get codeName(): string {
    return this.M.codeName;
  }

  get dynaModelFilePath(): string {
    return this.M.dynaModelFilePath;
  }

  get fullCodeName(): string {
    return this.M.fullCodeName;
  }

  get height(): number {
    return this.M.height != null ? this.M.height : 0;
  }

  get mainMenuAlign(): 'LEFT' | 'TOP' | 'CENTER' | 'TREEEXP' | 'TABEXP_TOP' | 'TABEXP_LEFT' | 'TABEXP_BOTTOM' | 'TABEXP_RIGHT' | 'NONE' {
    return this.M.mainMenuAlign;
  }

  get memo(): string {
    return this.M.memo;
  }

  get name(): string {
    return this.M.name;
  }

  get openMode(): 'INDEXVIEWTAB' | 'POPUP' | 'POPUPMODAL' | 'POPUPAPP' | 'DRAWER_LEFT' | 'DRAWER_RIGHT' | 'DRAWER_TOP' | 'DRAWER_BOTTOM' | 'POPOVER' | 'USER' | 'USER2' | 'USER3' | 'USER4' {
    return this.M.openMode;
  }

  protected psappcounterrefs: IPSAppCounterRef[] | null = null;

  getPSAppCounterRefs(): IPSAppCounterRef[] | null {
    if (this.psappcounterrefs == null) {
      this.psappcounterrefs = this.fillChildListModel(this.M.getPSAppCounterRefs, 'app.control.IPSAppCounterRef') as IPSAppCounterRef[];
    }
    return this.psappcounterrefs;
  }

  get psAppCounterRefs(): IPSAppCounterRef[] | null {
    return this.getPSAppCounterRefs();
  }

  findPSAppCounterRef(objKey: any): IPSAppCounterRef | null {
    return this.getPSModel5('app.control.IPSAppCounterRef', this.getPSAppCounterRefs(), objKey) as IPSAppCounterRef;
  }

  protected psappdataentity: IPSAppDataEntity | null = null;

  getPSAppDataEntity(): IPSAppDataEntity | null {
    if (this.psappdataentity != null) return this.psappdataentity;
    const value = this.M.getPSAppDataEntity;
    if (value == null) {
      return null;
    }
    this.psappdataentity = this.getPSModel4('app.dataentity.IPSAppDataEntity', value, 'getPSAppDataEntity') as IPSAppDataEntity;
    return this.psappdataentity;
  }

  get psAppDataEntity(): IPSAppDataEntity | null {
    return this.getPSAppDataEntity();
  }

  getPSAppDataEntityMust(): IPSAppDataEntity {
    const value = this.getPSAppDataEntity();
    if (value == null) {
      throw new Error('未指定视图应用实体');
    }
    return value;
  }

  protected psappmodule: IPSAppModule | null = null;

  getPSAppModule(): IPSAppModule | null {
    if (this.psappmodule != null) return this.psappmodule;
    const value = this.M.getPSAppModule;
    if (value == null) {
      return null;
    }
    const ipsapplication = this.getParentPSModelObject('app.IPSApplication') as IPSApplication;
    if (ipsapplication != null) {
      this.psappmodule = ipsapplication.findPSAppModule(value);
    }
    return this.psappmodule;
  }

  get psAppModule(): IPSAppModule | null {
    return this.getPSAppModule();
  }

  getPSAppModuleMust(): IPSAppModule {
    const value = this.getPSAppModule();
    if (value == null) {
      throw new Error('未指定应用模块');
    }
    return value;
  }

  protected psappviewengines: IPSAppViewEngine[] | null = null;

  getPSAppViewEngines(): IPSAppViewEngine[] | null {
    if (this.psappviewengines == null) {
      this.psappviewengines = this.fillChildListModel(this.M.getPSAppViewEngines, 'app.view.IPSAppViewEngine') as IPSAppViewEngine[];
    }
    return this.psappviewengines;
  }

  get psAppViewEngines(): IPSAppViewEngine[] | null {
    return this.getPSAppViewEngines();
  }

  findPSAppViewEngine(objKey: any): IPSAppViewEngine | null {
    return this.getPSModel5('app.view.IPSAppViewEngine', this.getPSAppViewEngines(), objKey) as IPSAppViewEngine;
  }

  protected psappviewlogics: IPSAppViewLogic[] | null = null;

  getPSAppViewLogics(): IPSAppViewLogic[] | null {
    if (this.psappviewlogics == null) {
      this.psappviewlogics = this.fillChildListModel(this.M.getPSAppViewLogics, 'app.view.IPSAppViewLogic') as IPSAppViewLogic[];
    }
    return this.psappviewlogics;
  }

  get psAppViewLogics(): IPSAppViewLogic[] | null {
    return this.getPSAppViewLogics();
  }

  findPSAppViewLogic(objKey: any): IPSAppViewLogic | null {
    return this.getPSModel5('app.view.IPSAppViewLogic', this.getPSAppViewLogics(), objKey) as IPSAppViewLogic;
  }

  protected psappviewmsggroup: IPSAppViewMsgGroup | null = null;

  getPSAppViewMsgGroup(): IPSAppViewMsgGroup | null {
    if (this.psappviewmsggroup != null) return this.psappviewmsggroup;
    const value = this.M.getPSAppViewMsgGroup;
    if (value == null) {
      return null;
    }
    const ipsapplication = this.getParentPSModelObject('app.IPSApplication') as IPSApplication;
    if (ipsapplication != null) {
      this.psappviewmsggroup = ipsapplication.findPSAppViewMsgGroup(value);
    }
    return this.psappviewmsggroup;
  }

  get psAppViewMsgGroup(): IPSAppViewMsgGroup | null {
    return this.getPSAppViewMsgGroup();
  }

  getPSAppViewMsgGroupMust(): IPSAppViewMsgGroup {
    const value = this.getPSAppViewMsgGroup();
    if (value == null) {
      throw new Error('未指定应用视图消息组');
    }
    return value;
  }

  protected psappviewnavcontexts: IPSAppViewNavContext[] | null = null;

  getPSAppViewNavContexts(): IPSAppViewNavContext[] | null {
    if (this.psappviewnavcontexts == null) {
      this.psappviewnavcontexts = this.fillChildListModel(this.M.getPSAppViewNavContexts, 'app.view.IPSAppViewNavContext') as IPSAppViewNavContext[];
    }
    return this.psappviewnavcontexts;
  }

  get psAppViewNavContexts(): IPSAppViewNavContext[] | null {
    return this.getPSAppViewNavContexts();
  }

  findPSAppViewNavContext(objKey: any): IPSAppViewNavContext | null {
    return this.getPSModel5('app.view.IPSAppViewNavContext', this.getPSAppViewNavContexts(), objKey) as IPSAppViewNavContext;
  }

  protected psappviewnavparams: IPSAppViewNavParam[] | null = null;

  getPSAppViewNavParams(): IPSAppViewNavParam[] | null {
    if (this.psappviewnavparams == null) {
      this.psappviewnavparams = this.fillChildListModel(this.M.getPSAppViewNavParams, 'app.view.IPSAppViewNavParam') as IPSAppViewNavParam[];
    }
    return this.psappviewnavparams;
  }

  get psAppViewNavParams(): IPSAppViewNavParam[] | null {
    return this.getPSAppViewNavParams();
  }

  findPSAppViewNavParam(objKey: any): IPSAppViewNavParam | null {
    return this.getPSModel5('app.view.IPSAppViewNavParam', this.getPSAppViewNavParams(), objKey) as IPSAppViewNavParam;
  }

  protected psappviewparams: IPSAppViewParam[] | null = null;

  getPSAppViewParams(): IPSAppViewParam[] | null {
    if (this.psappviewparams == null) {
      this.psappviewparams = this.fillChildListModel(this.M.getPSAppViewParams, 'app.view.IPSAppViewParam') as IPSAppViewParam[];
    }
    return this.psappviewparams;
  }

  get psAppViewParams(): IPSAppViewParam[] | null {
    return this.getPSAppViewParams();
  }

  findPSAppViewParam(objKey: any): IPSAppViewParam | null {
    return this.getPSModel5('app.view.IPSAppViewParam', this.getPSAppViewParams(), objKey) as IPSAppViewParam;
  }

  protected psappviewrefs: IPSAppViewRef[] | null = null;

  getPSAppViewRefs(): IPSAppViewRef[] | null {
    if (this.psappviewrefs == null) {
      this.psappviewrefs = this.fillChildListModel(this.M.getPSAppViewRefs, 'app.view.IPSAppViewRef') as IPSAppViewRef[];
    }
    return this.psappviewrefs;
  }

  get psAppViewRefs(): IPSAppViewRef[] | null {
    return this.getPSAppViewRefs();
  }

  findPSAppViewRef(objKey: any): IPSAppViewRef | null {
    return this.getPSModel5('app.view.IPSAppViewRef', this.getPSAppViewRefs(), objKey) as IPSAppViewRef;
  }

  protected psappviewuiactions: IPSAppViewUIAction[] | null = null;

  getPSAppViewUIActions(): IPSAppViewUIAction[] | null {
    if (this.psappviewuiactions == null) {
      this.psappviewuiactions = this.fillChildListModel(this.M.getPSAppViewUIActions, 'app.view.IPSAppViewUIAction') as IPSAppViewUIAction[];
    }
    return this.psappviewuiactions;
  }

  get psAppViewUIActions(): IPSAppViewUIAction[] | null {
    return this.getPSAppViewUIActions();
  }

  findPSAppViewUIAction(objKey: any): IPSAppViewUIAction | null {
    return this.getPSModel5('app.view.IPSAppViewUIAction', this.getPSAppViewUIActions(), objKey) as IPSAppViewUIAction;
  }

  protected pscontrols: IPSControl[] | null = null;

  getPSControls(): IPSControl[] | null {
    if (this.pscontrols == null) {
      this.pscontrols = this.fillChildListModel(this.M.getPSControls, 'control.IPSControl') as IPSControl[];
    }
    return this.pscontrols;
  }

  get psControls(): IPSControl[] | null {
    return this.getPSControls();
  }

  findPSControl(objKey: any): IPSControl | null {
    return this.getPSModel5('control.IPSControl', this.getPSControls(), objKey) as IPSControl;
  }

  protected pssyscss: IPSSysCss | null = null;

  getPSSysCss(): IPSSysCss | null {
    if (this.pssyscss != null) return this.pssyscss;
    const value = this.M.getPSSysCss;
    if (value == null) {
      return null;
    }
    this.pssyscss = this.getPSModel4('res.IPSSysCss', value, 'getPSSysCss') as IPSSysCss;
    return this.pssyscss;
  }

  get psSysCss(): IPSSysCss | null {
    return this.getPSSysCss();
  }

  getPSSysCssMust(): IPSSysCss {
    const value = this.getPSSysCss();
    if (value == null) {
      throw new Error('未指定界面样式表对象');
    }
    return value;
  }

  protected pssysimage: IPSSysImage | null = null;

  getPSSysImage(): IPSSysImage | null {
    if (this.pssysimage != null) return this.pssysimage;
    const value = this.M.getPSSysImage;
    if (value == null) {
      return null;
    }
    this.pssysimage = this.getPSModel4('res.IPSSysImage', value, 'getPSSysImage') as IPSSysImage;
    return this.pssysimage;
  }

  get psSysImage(): IPSSysImage | null {
    return this.getPSSysImage();
  }

  getPSSysImageMust(): IPSSysImage {
    const value = this.getPSSysImage();
    if (value == null) {
      throw new Error('未指定图标对象');
    }
    return value;
  }

  protected pssyspfplugin: IPSSysPFPlugin | null = null;

  getPSSysPFPlugin(): IPSSysPFPlugin | null {
    if (this.pssyspfplugin != null) return this.pssyspfplugin;
    const value = this.M.getPSSysPFPlugin;
    if (value == null) {
      return null;
    }
    this.pssyspfplugin = this.getPSModel4('res.IPSSysPFPlugin', value, 'getPSSysPFPlugin') as IPSSysPFPlugin;
    return this.pssyspfplugin;
  }

  get psSysPFPlugin(): IPSSysPFPlugin | null {
    return this.getPSSysPFPlugin();
  }

  getPSSysPFPluginMust(): IPSSysPFPlugin {
    const value = this.getPSSysPFPlugin();
    if (value == null) {
      throw new Error('未指定前端应用插件');
    }
    return value;
  }

  protected psviewlayoutpanel: IPSViewLayoutPanel | null = null;

  getPSViewLayoutPanel(): IPSViewLayoutPanel | null {
    if (this.psviewlayoutpanel != null) return this.psviewlayoutpanel;
    const value = this.M.getPSViewLayoutPanel;
    if (value == null) {
      return null;
    }
    this.psviewlayoutpanel = this.getPSModel4('control.panel.IPSViewLayoutPanel', value, 'getPSViewLayoutPanel') as IPSViewLayoutPanel;
    return this.psviewlayoutpanel;
  }

  get psViewLayoutPanel(): IPSViewLayoutPanel | null {
    return this.getPSViewLayoutPanel();
  }

  getPSViewLayoutPanelMust(): IPSViewLayoutPanel {
    const value = this.getPSViewLayoutPanel();
    if (value == null) {
      throw new Error('未指定视图布局面板');
    }
    return value;
  }

  get priority(): number {
    return this.M.priority != null ? this.M.priority : -1;
  }

  get refFlag(): boolean {
    return this.M.refFlag != null ? this.M.refFlag : true;
  }

  protected refpsappview: IPSAppView | null = null;

  getRefPSAppView(): IPSAppView | null {
    if (this.refpsappview != null) return this.refpsappview;
    const value = this.M.getRefPSAppView;
    if (value == null) {
      return null;
    }
    this.refpsappview = this.getPSModel4('app.view.IPSAppView', value, 'getRefPSAppView') as IPSAppView;
    return this.refpsappview;
  }

  get refPSAppView(): IPSAppView | null {
    return this.getRefPSAppView();
  }

  getRefPSAppViewMust(): IPSAppView {
    const value = this.getRefPSAppView();
    if (value == null) {
      throw new Error('未指定实际引用视图');
    }
    return value;
  }

  protected subcappslanguageres: IPSLanguageRes | null = null;

  getSubCapPSLanguageRes(): IPSLanguageRes | null {
    if (this.subcappslanguageres != null) return this.subcappslanguageres;
    const value = this.M.getSubCapPSLanguageRes;
    if (value == null) {
      return null;
    }
    this.subcappslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getSubCapPSLanguageRes') as IPSLanguageRes;
    return this.subcappslanguageres;
  }

  get subCapPSLanguageRes(): IPSLanguageRes | null {
    return this.getSubCapPSLanguageRes();
  }

  getSubCapPSLanguageResMust(): IPSLanguageRes {
    const value = this.getSubCapPSLanguageRes();
    if (value == null) {
      throw new Error('未指定子标题语言资源');
    }
    return value;
  }

  get subCaption(): string {
    return this.M.subCaption;
  }

  get title(): string {
    return this.M.title;
  }

  protected titlepslanguageres: IPSLanguageRes | null = null;

  getTitlePSLanguageRes(): IPSLanguageRes | null {
    if (this.titlepslanguageres != null) return this.titlepslanguageres;
    const value = this.M.getTitlePSLanguageRes;
    if (value == null) {
      return null;
    }
    this.titlepslanguageres = this.getPSModel4('res.IPSLanguageRes', value, 'getTitlePSLanguageRes') as IPSLanguageRes;
    return this.titlepslanguageres;
  }

  get titlePSLanguageRes(): IPSLanguageRes | null {
    return this.getTitlePSLanguageRes();
  }

  getTitlePSLanguageResMust(): IPSLanguageRes {
    const value = this.getTitlePSLanguageRes();
    if (value == null) {
      throw new Error('未指定抬头语言资源');
    }
    return value;
  }

  get userCat(): string {
    return this.M.userCat;
  }

  get userTag(): string {
    return this.M.userTag;
  }

  get userTag2(): string {
    return this.M.userTag2;
  }

  get userTag3(): string {
    return this.M.userTag3;
  }

  get userTag4(): string {
    return this.M.userTag4;
  }

  get viewStyle(): 'DEFAULT' | 'STYLE2' | 'STYLE3' | 'STYLE4' | 'STYLE5' | 'STYLE6' | 'STYLE7' | 'STYLE8' | 'STYLE9' | 'STYLE10' | 'PREVIEW' {
    return this.M.viewStyle;
  }

  get viewType():
    | 'APPDATAUPLOADVIEW'
    | 'APPERRORVIEW'
    | 'APPFILEUPLOADVIEW'
    | 'APPFUNCPICKUPVIEW'
    | 'APPINDEXVIEW'
    | 'APPLOGINVIEW'
    | 'APPLOGOUTVIEW'
    | 'APPPANELVIEW'
    | 'APPPICUPLOADVIEW'
    | 'APPPORTALVIEW'
    | 'APPREDIRECTVIEW'
    | 'APPSTARTVIEW'
    | 'APPWELCOMEVIEW'
    | 'APPWFADDSTEPAFTERVIEW'
    | 'APPWFADDSTEPBEFOREVIEW'
    | 'APPWFREDIRECTVIEW'
    | 'APPWFSENDBACKVIEW'
    | 'APPWFSTEPACTORVIEW'
    | 'APPWFSTEPDATAVIEW'
    | 'APPWFSTEPTRACEVIEW'
    | 'APPWFSUPPLYINFOVIEW'
    | 'APPWFTAKEADVICEVIEW'
    | 'DECALENDAREXPVIEW'
    | 'DECALENDARVIEW'
    | 'DECALENDARVIEW9'
    | 'DECHARTEXPVIEW'
    | 'DECHARTVIEW'
    | 'DECHARTVIEW9'
    | 'DECUSTOMVIEW'
    | 'DEDATAVIEW'
    | 'DEDATAVIEW9'
    | 'DEDATAVIEWEXPVIEW'
    | 'DEEDITVIEW'
    | 'DEEDITVIEW2'
    | 'DEEDITVIEW3'
    | 'DEEDITVIEW4'
    | 'DEEDITVIEW9'
    | 'DEFORMPICKUPDATAVIEW'
    | 'DEGANTTEXPVIEW'
    | 'DEGANTTVIEW'
    | 'DEGANTTVIEW9'
    | 'DEGRIDEXPVIEW'
    | 'DEGRIDVIEW'
    | 'DEGRIDVIEW2'
    | 'DEGRIDVIEW4'
    | 'DEGRIDVIEW8'
    | 'DEGRIDVIEW9'
    | 'DEHTMLVIEW'
    | 'DEINDEXPICKUPDATAVIEW'
    | 'DEINDEXVIEW'
    | 'DEKANBANVIEW'
    | 'DEKANBANVIEW9'
    | 'DELISTEXPVIEW'
    | 'DELISTVIEW'
    | 'DELISTVIEW9'
    | 'DEMAPEXPVIEW'
    | 'DEMAPVIEW'
    | 'DEMAPVIEW9'
    | 'DEMDCUSTOMVIEW'
    | 'DEMEDITVIEW9'
    | 'DEMOBCALENDAREXPVIEW'
    | 'DEMOBCALENDARVIEW'
    | 'DEMOBCALENDARVIEW9'
    | 'DEMOBCHARTEXPVIEW'
    | 'DEMOBCHARTVIEW'
    | 'DEMOBCHARTVIEW9'
    | 'DEMOBCUSTOMVIEW'
    | 'DEMOBDATAVIEW'
    | 'DEMOBDATAVIEWEXPVIEW'
    | 'DEMOBEDITVIEW'
    | 'DEMOBEDITVIEW3'
    | 'DEMOBEDITVIEW9'
    | 'DEMOBFORMPICKUPMDVIEW'
    | 'DEMOBGANTTEXPVIEW'
    | 'DEMOBGANTTVIEW'
    | 'DEMOBGANTTVIEW9'
    | 'DEMOBHTMLVIEW'
    | 'DEMOBINDEXPICKUPMDVIEW'
    | 'DEMOBLISTEXPVIEW'
    | 'DEMOBLISTVIEW'
    | 'DEMOBMAPEXPVIEW'
    | 'DEMOBMAPVIEW'
    | 'DEMOBMAPVIEW9'
    | 'DEMOBMDVIEW'
    | 'DEMOBMDVIEW9'
    | 'DEMOBMEDITVIEW9'
    | 'DEMOBMPICKUPVIEW'
    | 'DEMOBOPTVIEW'
    | 'DEMOBPANELVIEW'
    | 'DEMOBPANELVIEW9'
    | 'DEMOBPICKUPLISTVIEW'
    | 'DEMOBPICKUPMDVIEW'
    | 'DEMOBPICKUPTREEVIEW'
    | 'DEMOBPICKUPVIEW'
    | 'DEMOBPORTALVIEW'
    | 'DEMOBPORTALVIEW9'
    | 'DEMOBREDIRECTVIEW'
    | 'DEMOBREPORTVIEW'
    | 'DEMOBTABEXPVIEW'
    | 'DEMOBTABEXPVIEW9'
    | 'DEMOBTABSEARCHVIEW'
    | 'DEMOBTABSEARCHVIEW9'
    | 'DEMOBTREEEXPVIEW'
    | 'DEMOBTREEEXPVIEW9'
    | 'DEMOBTREEVIEW'
    | 'DEMOBWFACTIONVIEW'
    | 'DEMOBWFDATAREDIRECTVIEW'
    | 'DEMOBWFDYNAACTIONVIEW'
    | 'DEMOBWFDYNAEDITVIEW'
    | 'DEMOBWFDYNAEDITVIEW3'
    | 'DEMOBWFDYNAEXPMDVIEW'
    | 'DEMOBWFDYNASTARTVIEW'
    | 'DEMOBWFEDITVIEW'
    | 'DEMOBWFEDITVIEW3'
    | 'DEMOBWFMDVIEW'
    | 'DEMOBWFPROXYRESULTVIEW'
    | 'DEMOBWFPROXYSTARTVIEW'
    | 'DEMOBWFSTARTVIEW'
    | 'DEMOBWIZARDVIEW'
    | 'DEMPICKUPVIEW'
    | 'DEMPICKUPVIEW2'
    | 'DEOPTVIEW'
    | 'DEPANELVIEW'
    | 'DEPANELVIEW9'
    | 'DEPICKUPDATAVIEW'
    | 'DEPICKUPGRIDVIEW'
    | 'DEPICKUPTREEVIEW'
    | 'DEPICKUPVIEW'
    | 'DEPICKUPVIEW2'
    | 'DEPICKUPVIEW3'
    | 'DEPORTALVIEW'
    | 'DEPORTALVIEW9'
    | 'DEREDIRECTVIEW'
    | 'DEREPORTVIEW'
    | 'DETABEXPVIEW'
    | 'DETABEXPVIEW9'
    | 'DETABSEARCHVIEW'
    | 'DETABSEARCHVIEW9'
    | 'DETREEEXPVIEW'
    | 'DETREEEXPVIEW2'
    | 'DETREEEXPVIEW3'
    | 'DETREEGRIDEXVIEW'
    | 'DETREEGRIDEXVIEW9'
    | 'DETREEGRIDVIEW'
    | 'DETREEGRIDVIEW9'
    | 'DETREEVIEW'
    | 'DETREEVIEW9'
    | 'DEWFACTIONVIEW'
    | 'DEWFDATAREDIRECTVIEW'
    | 'DEWFDYNAACTIONVIEW'
    | 'DEWFDYNAEDITVIEW'
    | 'DEWFDYNAEDITVIEW3'
    | 'DEWFDYNAEXPGRIDVIEW'
    | 'DEWFDYNASTARTVIEW'
    | 'DEWFEDITPROXYDATAVIEW'
    | 'DEWFEDITVIEW'
    | 'DEWFEDITVIEW2'
    | 'DEWFEDITVIEW3'
    | 'DEWFEDITVIEW9'
    | 'DEWFEXPVIEW'
    | 'DEWFGRIDVIEW'
    | 'DEWFPROXYDATAVIEW'
    | 'DEWFPROXYRESULTVIEW'
    | 'DEWFPROXYSTARTVIEW'
    | 'DEWFSTARTVIEW'
    | 'DEWIZARDVIEW'
    | 'DESUBAPPREFVIEW' {
    return this.M.viewType;
  }

  get width(): number {
    return this.M.width != null ? this.M.width : 0;
  }

  get enableDP(): boolean {
    return this.M.enableDP;
  }

  get enableWF(): boolean {
    return this.M.enableWF != null ? this.M.enableWF : false;
  }

  get pickupMode(): boolean {
    return this.M.pickupMode != null ? this.M.pickupMode : false;
  }

  get redirectView(): boolean {
    return this.M.redirectView != null ? this.M.redirectView : false;
  }

  get showCaptionBar(): boolean {
    return this.M.showCaptionBar != null ? this.M.showCaptionBar : true;
  }

  get cls(): string {
    return 'PSAppViewImpl';
  }

  instanceof(cls: string): boolean {
    if (cls == 'app.view.IPSAppView' || cls == 'control.IPSControlContainer') return true;
    return super.instanceof(cls);
  }
}
